document.addEventListener('DOMContentLoaded', function () {
    // 初始化页面滚动检测
    initScrollForElement('.content');

    // 初始化播放器功能
    initPlayerCoverClick();

    // 初始化顶部栏滚动隐藏
    initTopBarScrollHandling();

    // 加载用户数据并更新设置页面
    loadUserDataAndUpdateSettings();

    // 设置导航功能
    const settingsNavItems = document.querySelectorAll('.settings-nav-item');
    const settingsSections = document.querySelectorAll('.settings-section');

    settingsNavItems.forEach(item => {
        item.addEventListener('click', () => {
            // 移除所有激活状态
            settingsNavItems.forEach(navItem => {
                navItem.classList.remove('active');
            });
            settingsSections.forEach(section => {
                section.classList.remove('active');
            });

            // 设置当前项为激活状态
            item.classList.add('active');
            const sectionId = item.getAttribute('data-section');
            document.getElementById(`${sectionId}-section`).classList.add('active');
        });
    });

    // 编辑按钮功能
    initEditButtons();

    // 升级高级会员按钮
    const premiumButton = document.querySelector('.premium-btn');

    premiumButton.addEventListener('click', () => {
        window.location.href = 'premium.html';
    });
});

/**
 * 加载用户数据并更新设置页面
 */
function loadUserDataAndUpdateSettings() {
    // 尝试从两个可能的存储位置获取用户数据
    let currentUser = null;
    
    try {
        // 先尝试从新的存储键获取
        const userData = localStorage.getItem('currentUser');
        if (userData) {
            currentUser = JSON.parse(userData);
        }
        
        // 如果没有，尝试从旧存储键获取
        if (!currentUser) {
            const oldUserData = localStorage.getItem('shengpotian_current_user');
            if (oldUserData) {
                currentUser = JSON.parse(oldUserData);
            }
        }
    } catch (error) {
        console.error('解析用户数据时出错:', error);
        showLoginRequired();
        return;
    }
    
    if (!currentUser) {
        showLoginRequired();
        return;
    }
    
    // 更新设置页面的用户信息
    updateUserInfoUI(currentUser);
    
    // 更新会员信息
    updateMembershipUI(currentUser);
    
    // 更新个人资料设置
    updateProfileSettingsUI(currentUser);
}

/**
 * 显示需要登录的提示
 */
function showLoginRequired() {
    // 获取设置内容区域
    const settingsContent = document.querySelector('.settings-content');
    if (!settingsContent) return;
    
    // 替换内容为登录提示
    settingsContent.innerHTML = `
        <div class="login-required">
            <div class="login-icon">
                <i class="fas fa-user-lock" style="font-size: 48px; color: #b3b3b3; margin-bottom: 20px;"></i>
            </div>
            <h2>请登录以管理设置</h2>
            <p>您需要登录才能查看和修改个人设置</p>
            <div class="login-buttons" style="margin-top: 20px;">
                <a href="login.html" class="save-btn">登录</a>
                <a href="register.html" class="outline-btn" style="margin-left: 10px;">注册</a>
            </div>
        </div>
    `;
}

/**
 * 更新用户个人信息UI
 */
function updateUserInfoUI(user) {
    // 更新电子邮箱
    const emailInput = document.getElementById('email');
    if (emailInput) {
        emailInput.value = user.email || 'user@example.com';
    }
    
    // 更新手机号码（如果有）
    const mobileInput = document.getElementById('mobile');
    if (mobileInput) {
        mobileInput.value = user.mobile || '未绑定手机号码';
    }
    
    // 用户名
    const usernameInput = document.getElementById('username');
    if (usernameInput) {
        usernameInput.value = user.username || '用户';
    }
    
    // 个人简介
    const bioTextarea = document.getElementById('bio');
    if (bioTextarea) {
        bioTextarea.value = user.bio || '';
    }
    
    // 所在地
    const locationInput = document.getElementById('location');
    if (locationInput) {
        locationInput.value = user.location || '';
    }
    
    // 头像
    const avatarImg = document.querySelector('.avatar-preview img');
    if (avatarImg) {
        avatarImg.src = user.avatar || 'assets/images/avatars/default.png';
        avatarImg.alt = user.username || '用户头像';
    }
    
    // 初始化个人资料表单保存按钮
    const saveProfileBtn = document.querySelector('.save-btn');
    if (saveProfileBtn) {
        saveProfileBtn.addEventListener('click', function() {
            saveProfileChanges(user);
        });
    }
}

/**
 * 更新会员信息UI
 */
function updateMembershipUI(user) {
    const membershipStatus = document.querySelector('.membership-status');
    if (!membershipStatus) return;
    
    // 获取会员状态徽章
    const statusBadge = membershipStatus.querySelector('.status-badge');
    // 获取会员状态描述
    const statusDescription = membershipStatus.querySelector('p');
    // 获取升级按钮
    const upgradeBtn = document.querySelector('.premium-btn');
    
    if (user.isPremium) {
        // 用户是高级会员
        if (statusBadge) {
            statusBadge.className = 'status-badge premium';
            statusBadge.textContent = 'Premium会员';
        }
        
        if (statusDescription) {
            // 计算到期日期显示
            let expiryText = '永久会员';
            if (user.premiumExpiry) {
                const expiryDate = new Date(user.premiumExpiry);
                expiryText = `有效期至: ${expiryDate.toLocaleDateString('zh-CN')}`;
            }
            
            statusDescription.innerHTML = `您当前使用的是高级会员账户<br>${expiryText}`;
        }
        
        if (upgradeBtn) {
            upgradeBtn.textContent = '管理会员';
            upgradeBtn.addEventListener('click', () => {
                window.location.href = 'profile.html?tab=subscription';
            });
        }
        
    } else {
        // 用户是免费用户
        if (statusBadge) {
            statusBadge.className = 'status-badge free';
            statusBadge.textContent = '免费用户';
        }
        
        if (statusDescription) {
            statusDescription.textContent = '您当前使用的是免费账户';
        }
        
        if (upgradeBtn) {
            upgradeBtn.textContent = '升级至高级会员';
        }
    }
}

/**
 * 更新个人资料设置UI
 */
function updateProfileSettingsUI(user) {
    // 隐私设置
    const publicProfileToggle = document.getElementById('public-profile');
    if (publicProfileToggle) {
        publicProfileToggle.checked = user.publicProfile !== false; // 默认为true
    }
    
    const shareListeningToggle = document.getElementById('share-listening');
    if (shareListeningToggle) {
        shareListeningToggle.checked = user.shareListening !== false; // 默认为true
    }
    
    const allowSearchToggle = document.getElementById('allow-search');
    if (allowSearchToggle) {
        allowSearchToggle.checked = user.allowSearch !== false; // 默认为true
    }
    
    // 播放设置
    const autoplayToggle = document.getElementById('autoplay');
    if (autoplayToggle) {
        autoplayToggle.checked = user.autoplay === true; // 默认为false
    }
    
    const gaplessToggle = document.getElementById('gapless');
    if (gaplessToggle) {
        gaplessToggle.checked = user.gapless !== false; // 默认为true
    }
    
    const normalizeToggle = document.getElementById('normalize');
    if (normalizeToggle) {
        normalizeToggle.checked = user.normalize !== false; // 默认为true
    }
    
    // 初始化切换开关事件
    initToggleSwitches(user);
}

/**
 * 初始化编辑按钮
 */
function initEditButtons() {
    const editButtons = document.querySelectorAll('.edit-btn');

    editButtons.forEach(button => {
        button.addEventListener('click', () => {
            const inputField = button.previousElementSibling;

            if (inputField.disabled) {
                inputField.disabled = false;
                inputField.focus();
                button.innerHTML = '<i class="fas fa-save"></i> 保存';
            } else {
                inputField.disabled = true;
                button.innerHTML = '<i class="fas fa-pen"></i> 修改';
                
                // 获取当前用户数据
                const user = getUserData();
                if (!user) return;
                
                // 保存修改的字段
                const fieldId = inputField.id;
                const fieldValue = inputField.value;
                
                // 根据字段ID更新相应的用户数据
                if (fieldId === 'email') {
                    user.email = fieldValue;
                } else if (fieldId === 'password') {
                    // 密码修改需要特殊处理，这里只是示例
                    console.log('密码需要特殊处理');
                } else if (fieldId === 'mobile') {
                    user.mobile = fieldValue;
                }
                
                // 保存更新后的用户数据
                saveUserData(user);
                console.log('保存数据:', fieldId, fieldValue);
            }
        });
    });
}

/**
 * 初始化切换开关事件
 */
function initToggleSwitches(user) {
    const toggleSwitches = document.querySelectorAll('.toggle-input');
    
    toggleSwitches.forEach(toggle => {
        toggle.addEventListener('change', function() {
            const toggleId = this.id;
            const isChecked = this.checked;
            
            // 获取最新的用户数据
            const currentUser = getUserData();
            if (!currentUser) return;
            
            // 根据切换开关ID更新用户设置
            switch(toggleId) {
                case 'public-profile':
                    currentUser.publicProfile = isChecked;
                    break;
                case 'share-listening':
                    currentUser.shareListening = isChecked;
                    break;
                case 'allow-search':
                    currentUser.allowSearch = isChecked;
                    break;
                case 'personalized-recommendations':
                    currentUser.personalizedRecommendations = isChecked;
                    break;
                case 'collect-data':
                    currentUser.collectData = isChecked;
                    break;
                case 'autoplay':
                    currentUser.autoplay = isChecked;
                    break;
                case 'gapless':
                    currentUser.gapless = isChecked;
                    break;
                case 'normalize':
                    currentUser.normalize = isChecked;
                    break;
                // 通知设置
                case 'new-music':
                case 'concerts':
                case 'playlist-updates':
                case 'product-updates':
                case 'promotions':
                case 'surveys':
                    if (!currentUser.notifications) currentUser.notifications = {};
                    currentUser.notifications[toggleId] = isChecked;
                    break;
                // 安全设置
                case 'two-factor':
                case 'login-notification':
                    if (!currentUser.security) currentUser.security = {};
                    currentUser.security[toggleId] = isChecked;
                    break;
            }
            
            // 保存更新后的用户数据
            saveUserData(currentUser);
            console.log(`设置 ${toggleId} 已更新为 ${isChecked}`);
        });
    });
    
    // 初始化范围滑块事件
    const crossfadeSlider = document.getElementById('crossfade');
    if (crossfadeSlider) {
        // 设置初始值
        crossfadeSlider.value = user.crossfade || 0;
        
        crossfadeSlider.addEventListener('change', function() {
            const value = parseInt(this.value);
            const currentUser = getUserData();
            if (currentUser) {
                currentUser.crossfade = value;
                saveUserData(currentUser);
                console.log(`淡入淡出设置已更新为 ${value}秒`);
            }
        });
    }
}

/**
 * 保存个人资料变更
 */
function saveProfileChanges(user) {
    // 获取表单数据
    const usernameValue = document.getElementById('username').value;
    const bioValue = document.getElementById('bio').value;
    const locationValue = document.getElementById('location').value;
    
    // 获取最新的用户数据
    const currentUser = getUserData();
    if (!currentUser) return;
    
    // 更新用户数据
    currentUser.username = usernameValue;
    currentUser.bio = bioValue;
    currentUser.location = locationValue;
    
    // 保存用户数据
    saveUserData(currentUser);
    
    // 显示成功提示
    alert('个人资料已更新');
}

/**
 * 获取当前登录的用户数据
 */
function getUserData() {
    // 先尝试从新的存储键获取
    const userData = localStorage.getItem('currentUser');
    if (userData) {
        return JSON.parse(userData);
    }
    
    // 再尝试从旧的存储键获取
    const oldUserData = localStorage.getItem('shengpotian_current_user');
    if (oldUserData) {
        return JSON.parse(oldUserData);
    }
    return null;
}

/**
 * 保存用户数据到本地存储
 */
function saveUserData(user) {
    if (!user) return;

    // 保存到新的存储键
    localStorage.setItem('currentUser', JSON.stringify(user));
    
    // 如果旧的存储键存在，也更新它以保持一致性
    if (localStorage.getItem('shengpotian_current_user')) 
        localStorage.setItem('shengpotian_current_user', JSON.stringify(user));
    
    // 更新多用户存储中的用户数据（如果有）
    updateUserInStorage(user);
}

/**
 * 更新用户数据到用户信息数组
 */
function updateUserInStorage(user) {
    // 获取所有用户
    const users = JSON.parse(localStorage.getItem('users') || '[]');
    
    // 查找当前用户
    const userIndex = users.findIndex(u => u.id === user.id);
    
    if (userIndex !== -1) {
        // 保留原始密码
        const password = users[userIndex].password;
        
        // 更新用户数据
        users[userIndex] = { ...user, password };
        
        // 保存回存储
        localStorage.setItem('users', JSON.stringify(users));
    }
    
    // 如果使用旧存储格式
    const oldUsers = JSON.parse(localStorage.getItem('shengpotian_users') || '[]');
    const oldUserIndex = oldUsers.findIndex(u => u.id === user.id);
    
    if (oldUserIndex !== -1) {
        const password = oldUsers[oldUserIndex].password;
        oldUsers[oldUserIndex] = { ...user, password };
        localStorage.setItem('shengpotian_users', JSON.stringify(oldUsers));
    }
}